Status deste relatório: working in progress
Metadados do artigo aceito para publicação na RSP de autoria de Rony Coelho, Felipe Guth e Miguel Loureiro
Neste relatório são disponibilizados os códigos e as bases de dados utilizados no artigo
Para verificar os códigos, clique em Code
Os códigos estão comentados com #
Um versão em formato de script (arquivo .Rmd) pode ser encontrada no github
Os dados brutos podem acessados nos respectivos links fornecidos adiante
Carregar pacotes
Definir funções
# limpar enviroment
rm(list = ls())
# Desabilitar notação científica
options(scipen = 999)
# Instalar este pacote para quem não o tem
#install.packages("pacman")
pacman::p_load(tidyverse, readxl, janitor, sjPlot,
scales, DataExplorer, DT, gridExtra,
viridis, ggcorrplot, VGAM, geobr, ggthemes)
# A funcao carrega dois objetos:
# 1 - O dicionário da Munic, contido na primeira aba do excel;
# 2 - Os dados das Munics contidos em todas as demais abas, unidos por "A1"
carregar_munics <- function(link_da_munic, ano){
# definir diretório e arquivo temporário
wd_origin <- getwd()
temp_dir <- tempdir()
setwd(temp_dir)
file.remove(list.files(path = temp_dir))
temp_file <- tempfile(tmpdir = temp_dir)
# Criar lista para armazenar arquivos
Munic_list <- list()
# Download da Munic
download.file(url = link_da_munic, destfile = temp_file)
# unizip
unzip(temp_file)
# remover temporário
file.remove(temp_file)
# selecionar o arquivo xls
file.xls <- list.files(pattern = "xls")
# Nome da Munic
Munic <- paste0("Munic_", ano)
# Carregar todas as abas do excel
Munic <- file.xls %>%
excel_sheets() %>%
set_names() %>%
map(read_excel, path = file.xls)
# remover arquivo xls da pasta temporaria
file.remove(file.xls)
# Nome do dicionario
dic <- paste0("dic_", ano)
# selecionar dicionário
dic <- Munic[[1]]
# excluir dicionário
Munic[[1]] <- NULL
# Mesclar todas as abas do excel
Munic <- Munic %>%
reduce(full_join, by = "A1")
# Criar nome da lista
list <- paste0("list_", Munic)
# criar lista com dicionário e Munic
list <- list(dic, Munic)
# retornar ao diretório orginal
setwd(wd_origin)
# retornar objeto list com dicionário e Munics
return(list)
}
########################################
# Munic 2014
Munic_14_link <- "ftp://ftp.ibge.gov.br/Perfil_Municipios/2014/base_MUNIC_xls_2014.zip"
Munic_14 <- carregar_munics(link_da_munic = Munic_14_link,
ano = 2014)
Munic_dic_14 <- Munic_14[[1]]
Munic_14 <- Munic_14[[2]]
########################################
# Munic 2013 - Suplementar
Munic_13sup_link <- "ftp://ftp.ibge.gov.br/Perfil_Municipios/Assistencia_Social_2013/xls/base_assist_social_2013.zip"
Munic_13 <- carregar_munics(link_da_munic = Munic_13sup_link,
ano = 2013)
Munic_dic_13 <- Munic_13[[1]]
Munic_13 <- Munic_13[[2]]
########################################
# Munic 2015
Munic_15_link <- "ftp://ftp.ibge.gov.br/Perfil_Municipios/2015/Base_de_Dados/Base_MUNIC_2015_xls.zip"
Munic_15 <- carregar_munics(link_da_munic = Munic_15_link,
ano = 2015)
Munic_dic_15 <- Munic_15[[1]]
Munic_15 <- Munic_15[[2]]
########################################
# Pib
pib_link <- "ftp://ftp.ibge.gov.br/Pib_Municipios/2017/base/base_de_dados_2010_2017_xls.zip"
temp_dir <- tempdir()
#
temp_file2 <- tempfile(tmpdir = temp_dir)
# download
download.file(url = pib_link, destfile = temp_file2)
#unzip
unzip(temp_file2)
# selecionar arquivo
file.xls <- list.files(pattern = "xls")
pib <- rio::import(file.xls)
file.remove(file.xls)
########################################
# Carregar dados do idh-m
idhm_link <- "http://atlasbrasil.org.br/2013/data/rawData/atlas2013_dadosbrutos_pt.xlsx"
idhm <- rio::import(idhm_link, sheet = 2)
#idhm <- read_excel("idh_census.xlsx", sheet = 2)
########################################
# base de códigos IBGE
#cod <- read_excel("codigos.xlsx") %>%
# dplyr::select(1:2)
# Uso particular para configurações no computador pessoal
#setwd("C:/r_files/my_academic_projects/capacidades/capacitties")
#save.image("capacities_raw_data.RData")
#load("capacities_raw_data.RData")
###########################################
# Munic 2014 - saúde e educação
index_14 <- c("A263", # Conselho de Saúde
"A271", # Fundo de Saúde
"A273", # Plano de Saúde
"A251", # Secretaria de Saúde
"A256", # Servidores da Saúde
"A207", # Conselho de Educação
"A224", # Conselho do Fundeb, proxy para o fundo
"A203", # Plano de Educação
"A157", # Secretaria de Educação
"A167", # Servidores da Educação
#"A392", # Secretaria Direitos Humanos
#"A545", # Fundo Direitos Humanos
#"A410", # Plano Direitos Humanos
#"A442", # Conselho Direitos Humanos
"A2", # Total de servidores do Municipio
"A12", # Total com ensino Superior
"A13") # Total com pós-graduação
Munic_14_sel <- Munic_14 %>%
dplyr::select(A1,
A1022:A1029, # região, população e porte
index_14)
###########################################
#Munic 2013 - Assistência Social
index_13 <- c("A1",
"A199", # Conselho da Assit. Social
"A230", # Fundo da Assist. Social
"A149", # Plano da Assist. Social
"A2", # Secretaria de Assist. Social
"A39") # Servidores da Assist. Social
Munic_13_sel <- Munic_13 %>%
dplyr::select(index_13)
###########################################
# Munic 2015 - consórcios
index_15 <- c("A1",
"A151", # Consórcio de Educação
"A152", # Intermunicipal
"A153", # Estadual
"A154", # Federal
"A155", # Consórcio de Saúde
"A156", # Intermunicipal
"A157", # Estadual
"A158", # Federal
"A159", # Consórcio de Assist. Social
"A160", # Intermunicipal
"A161", # Estadual
"A162") # Federal
Munic_15_sel <- Munic_15 %>%
dplyr::select(index_15)
###########################################
# PIB - 2014
pib <- clean_names(pib)
pib_sel <- pib %>% #glimpse()
filter(ano == 2014) %>%
select(A1 = codigo_do_municipio, ano,
pib_total = produto_interno_bruto_a_precos_correntes_r_1_000,
pib_per_cap = produto_interno_bruto_per_capita_a_precos_correntes_r_1_00)%>%
arrange(desc(pib_per_cap))
###########################################
# IDH-M - 2010
idhm_sel <- idhm %>%
dplyr::select(A1 = Codmun7, ANO, IDHM) %>%
filter(ANO==2010) %>%
arrange(desc(IDHM))
# garantir que os códigos possuem a mesma classficação
Munic_13_sel$A1 <- as.character(Munic_13_sel$A1)
Munic_15_sel$A1 <- as.character(Munic_15_sel$A1)
Munic_14_sel$A1 <- as.character(Munic_14_sel$A1)
pib_sel$A1 <- as.character(pib_sel$A1)
idhm_sel$A1 <- as.character(idhm_sel$A1)
# Criar variavel com código de 6 digitos para mesclar com a Munic 2013 e mesclar todas as Munics
capacities <- Munic_14_sel %>%
mutate(A1a = str_sub(A1,start = 1, end = 6)) %>%
select(A1, A1a, everything()) %>%
full_join(Munic_13_sel, by = c("A1a"="A1")) %>%
full_join(Munic_15_sel, by = c("A1"="A1"))
# Mesclar pib e idhm
capacities <- capacities %>%
full_join(pib_sel) %>%
full_join(idhm_sel)
capacities %>% head(10)
capacities <- capacities %>%
select(cod_mun = A1,
nm_mun = A1027,
populacao = A1028,
faixa_pop = A1029,
cod_est = A1022,
nm_est = A1025,
sg_est = A1026,
regiao = A1024,
# Secretarias
sc_sa = A251,
sc_as = A2.y,
sc_ed = A157.x,
# Planos
pl_sa = A273,
pl_as = A149,
pl_ed = A203,
# Fundos
fu_sa = A271,
fu_as = A230,
fu_ed = A224,
# Conselhos
chl_sa = A263,
chl_as = A199,
chl_ed = A207,
# Servidores
ser_sa = A256,
ser_as = A39,
ser_ed = A167,
# Consórciso
consor_ed = A151,
#consor_ed_mun = A152 ,
#consor_ed_est = A153,
#consor_ed_un = A154,
consor_sa = A155,
#consor_sa_mun = A156,
#consor_sa_est = A157.y,
#consor_sa_un = A158,
consor_as = A159,
#consor_as_mun = A160,
#consor_as_est = A161,
#consor_as_un = A162,
pib_total = pib_total,
pib_per_cap = pib_per_cap,
ano_pib = ano,
idhm = IDHM,
ano_idhm = ANO)
# Verificar existência de NAs
DataExplorer::plot_missing(capacities)
# NA - presentes apenas nos IDHM
# Excluir NA's
# Removidos 5 municipios não criados até 2010, portante sem o IDHM para esse ano.
capacities <- capacities %>%
drop_na(idhm)
DataExplorer::plot_missing(capacities)
capacities_1 <- capacities
Podem ser baixados em formato excel ou csv
Legenda:
capacities_1 %>%
datatable(extensions = 'Buttons',
rownames = F,
options = list(dom = 'Blfrtip',
buttons = c('csv', 'excel'),
autoFill = TRUE,
fixedHeader = TRUE,
autowidth = TRUE,
paging = F,
scrollX = TRUE,
scrollY = "400px"))
# Uso particular para configurações de uso pessoal
#setwd("C:/r_files/my_academic_projects/capacidades/capacitties")
#save.image("capacities_raw_data_2.RData")
#load("capacities_raw_data_2.RData")
De 5.565 mun. passamos a trabalhar com 4.917 (88%)
capacities_2 <- capacities_1 %>%
filter(populacao <= 50000) %>%
mutate(faixa_pop = faixa_pop %>% as.factor())
unique(capacities_2$faixa_pop)
## [1] 4 - 20001 até 50000 2 - 5001 até 10000 3 - 10001 até 20000
## [4] 1 - Até 5000
## 4 Levels: 1 - Até 5000 2 - 5001 até 10000 ... 4 - 20001 até 50000
summary(capacities_2$faixa_pop)
## 1 - Até 5000 2 - 5001 até 10000 3 - 10001 até 20000 4 - 20001 até 50000
## 1242 1214 1381 1080
summary(capacities_2$populacao)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 822 4967 10008 13312 18595 49963
character_col <- c("cod_mun", "nm_mun")
factor_col <- c("cod_est", "nm_est", "sg_est","faixa_pop", "regiao", "sc_sa", "sc_as", "sc_ed", "pl_sa", "pl_as", "pl_ed", "fu_sa", "fu_as", "fu_ed", "chl_sa", "chl_as", "chl_ed", "consor_ed", "consor_ed", "consor_sa", "consor_as")
numeric_col <- c("populacao", "ser_sa", "ser_as", "ser_ed", "pib_total", "pib_per_cap", "ano_pib", "idhm","ano_idhm")
capacities_2 <- capacities_2 %>%
mutate_at(character_col, as.character) %>%
mutate_at(factor_col, as.factor) %>%
mutate_at(numeric_col, as.numeric)
Numéricas: são apresentados valores mínimos, máximos, média, mediana etc.
Categóricas: categorias e quantidade de cada uma
Character: quantidade de valores únicos
summary(capacities_2)
## cod_mun nm_mun populacao
## Length:4917 Length:4917 Min. : 822
## Class :character Class :character 1st Qu.: 4967
## Mode :character Mode :character Median :10008
## Mean :13312
## 3rd Qu.:18595
## Max. :49963
##
## faixa_pop cod_est nm_est
## 1 - Até 5000 :1242 31 : 785 Minas Gerais : 785
## 2 - 5001 até 10000 :1214 35 : 512 São Paulo : 512
## 3 - 10001 até 20000:1381 43 : 453 Rio Grande do Sul: 453
## 4 - 20001 até 50000:1080 29 : 370 Bahia : 370
## 41 : 364 Paraná : 364
## 42 : 265 Santa Catarina : 265
## (Other):2168 (Other) :2168
## sg_est regiao
## MG : 785 1 - Norte : 379
## SP : 512 2 - Nordeste :1611
## RS : 453 3 - Sudeste :1419
## BA : 370 4 - Sul :1082
## PR : 364 5 - Centro-Oeste: 426
## SC : 265
## (Other):2168
## sc_sa
## Não informado : 2
## Órgão da administração indireta : 4
## Recusa : 1
## Secretaria municipal em conjunto com outras políticas: 366
## Secretaria municipal exclusiva :4417
## Setor subordinado a outra secretaria : 10
## Setor subordinado diretamente à chefia do Executivo : 117
## sc_as
## Fundação pública : 3
## Não possui estrutura : 2
## Recusa : 1
## Secretaria municipal em conjunto com outras políticas: 963
## Secretaria municipal exclusiva :3727
## Setor subordinado a outra secretaria : 82
## Setor subordinado diretamente à chefia do Executivo : 139
## sc_ed
## Não informado : 1
## Órgão da administração indireta : 2
## Recusa : 1
## Secretaria municipal em conjunto com outras políticas:1983
## Secretaria municipal exclusiva :2751
## Setor subordinado à outra secretaria : 9
## Setor subordinado diretamente à chefia do Executivo : 170
## pl_sa pl_as pl_ed fu_sa
## Não : 122 Não : 286 Não :2852 Não : 4
## Não informado: 3 Recusa: 1 Não informado: 3 Não informado: 3
## Recusa : 1 Sim :4630 Recusa : 1 Recusa : 1
## Sim :4791 Sim :2061 Sim :4909
##
##
##
## fu_as fu_ed chl_sa chl_as
## Não : 31 Não : 72 Não : 10 Não : 5
## Recusa: 1 Não informado: 3 Não informado: 2 Recusa: 1
## Sim :4885 Recusa : 1 Recusa : 1 Sim :4911
## Sim :4841 Sim :4904
##
##
##
## chl_ed ser_sa ser_as ser_ed
## Não : 666 Min. : 1.0 Min. : 0.000 Min. : 0.0
## Não informado: 3 1st Qu.: 61.0 1st Qu.: 2.000 1st Qu.: 94.0
## Recusa : 1 Median : 100.0 Median : 5.000 Median : 179.0
## Sim :4247 Mean : 135.7 Mean : 8.559 Mean : 267.4
## 3rd Qu.: 179.0 3rd Qu.: 11.000 3rd Qu.: 364.0
## Max. :1253.0 Max. :180.000 Max. :2460.0
## NA's :50 NA's :11 NA's :29
## consor_ed consor_sa consor_as
## Não :4594 Não :2396 Não :4513
## Não informado: 1 Não informado: 1 Não informado: 1
## Recusa : 1 Recusa : 1 Recusa : 1
## Sim : 321 Sim :2519 Sim : 402
##
##
##
## pib_total pib_per_cap ano_pib idhm
## Min. : 11715 Min. : 3082 Min. :2014 Min. :0.4180
## 1st Qu.: 58829 1st Qu.: 7491 1st Qu.:2014 1st Qu.:0.5940
## Median : 119973 Median : 12951 Median :2014 Median :0.6570
## Mean : 238100 Mean : 17625 Mean :2014 Mean :0.6521
## 3rd Qu.: 251339 3rd Qu.: 21434 3rd Qu.:2014 3rd Qu.:0.7100
## Max. :11915834 Max. :815698 Max. :2014 Max. :0.8540
##
## ano_idhm
## Min. :2010
## 1st Qu.:2010
## Median :2010
## Mean :2010
## 3rd Qu.:2010
## Max. :2010
##
1 mun. (cod_mun: 2102150) recusou-se a responder todas as questões
1 mun. (cod_mun: 2102150) recusou-se a responder questões sobre consórcios
# capacities_2[which(capacities_2$sc_as == "Recusa"), ]
# capacities_2[which(capacities_2$sc_ed == "Recusa"), ]
# capacities_2[which(capacities_2$consor_ed == "Recusa"), ]
# # A tibble: 1 x 31
# cod_mun nm_mun populacao faixa_pop cod_est nm_est sg_est regiao sc_sa sc_as sc_ed pl_sa pl_as pl_ed
# <chr> <chr> <dbl> <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct>
# 1 2102150 Brejo~ 4291 1 - Até ~ 21 Maran~ MA 2 - N~ Recu~ Recu~ Recu~ Recu~ Recu~ Recu~
# Filtrar 1 municipio com recusa para todas as variáveis
capacities_2 <- filter(capacities_2, cod_mun != 2102150)
capacities_2 <- filter(capacities_2, cod_mun != 4110508)
# 4.915 casos
Operação em dois passos
# verificar labels
unique(capacities_2$sc_sa)
## [1] Secretaria municipal exclusiva
## [2] Setor subordinado diretamente à chefia do Executivo
## [3] Secretaria municipal em conjunto com outras políticas
## [4] Setor subordinado a outra secretaria
## [5] Recusa
## [6] Não informado
## [7] Órgão da administração indireta
## 7 Levels: Não informado Órgão da administração indireta ... Setor subordinado diretamente à chefia do Executivo
unique(capacities_2$sc_ed)
## [1] Secretaria municipal exclusiva
## [2] Secretaria municipal em conjunto com outras políticas
## [3] Setor subordinado diretamente à chefia do Executivo
## [4] Órgão da administração indireta
## [5] Setor subordinado à outra secretaria
## [6] Recusa
## [7] Não informado
## 7 Levels: Não informado Órgão da administração indireta ... Setor subordinado diretamente à chefia do Executivo
unique(capacities_2$sc_as)
## [1] Secretaria municipal em conjunto com outras políticas
## [2] Secretaria municipal exclusiva
## [3] Setor subordinado diretamente à chefia do Executivo
## [4] Setor subordinado a outra secretaria
## [5] Recusa
## [6] Fundação pública
## [7] Não possui estrutura
## 7 Levels: Fundação pública Não possui estrutura ... Setor subordinado diretamente à chefia do Executivo
Transformar Secretaria municipal exclusiva = Sim
Outras modalidades = Não
# Transformar Secretaria exclusiva = Sim.
capacities_2 <- capacities_2 %>%
mutate_at(vars(sc_sa:sc_ed),
funs(ifelse(.=="Secretaria municipal exclusiva", "Sim","Não")))
quantidades e porcentagens por setor
capacities_2 %>%
count(sc_sa, name = "quantidade") %>%
mutate(perc = quantidade/sum(quantidade)*100)
capacities_2 %>%
count(sc_as, name = "quantidade") %>%
mutate(perc = quantidade/sum(quantidade)*100)
capacities_2 %>%
count(sc_ed, name = "quantidade") %>%
mutate(perc = quantidade/sum(quantidade)*100)
Transformar todas as respostas “Sim” = 1;
Todas demais opções (“Não”, “Não informado”, etc) = 0
Depois, realizar a contagem de “Sim” e classificar
# Criar dummies 1 = Sim; 0 = Não.
capacities_2 <- capacities_2 %>%
mutate_at(vars(sc_sa:sc_ed), funs(ifelse(.== "Sim", 1, 0)))
# Contar quantidade de "sim" e organizar colunas
capacities_2 <- capacities_2 %>%
mutate(Num_sc = rowSums(select(.,sc_sa:sc_ed))) %>%
relocate(Num_sc, .after = sc_ed)
# Verificar
capacities_2 %>%
count(Num_sc, name = "quantidade") %>%
mutate(perc = quantidade/sum(quantidade)*100)
# Categorizar quantidade de secretarias
capacities_2 <- capacities_2 %>%
mutate(Sc_class = case_when(
Num_sc == 3 ~ "Possui 3",
Num_sc == 2 ~ "Possui 2",
Num_sc == 1 ~ "Possui 1",
Num_sc == 0 ~ "Não possui")) %>%
relocate(Sc_class, .after = Num_sc)
levels_cat <- c("Não possui" ,"Possui 1", "Possui 2","Possui 3")
capacities_2$Sc_class <- ordered(capacities_2$Sc_class,
levels = c(levels_cat))
# Verificar lables
unique(capacities_1$pl_as)
## [1] "Sim" "Não" "Recusa"
unique(capacities_1$pl_sa)
## [1] "Sim" "Não" "Recusa" "Não informado"
unique(capacities_1$pl_ed)
## [1] "Sim" "Não" "Não informado" "Recusa"
# Criar dummies 1 = Sim; 0 = Não.
capacities_2 <- capacities_2 %>%
mutate_at(vars(pl_sa:pl_ed), funs(ifelse(.== "Sim", 1, 0)))
# Contar quantidade de "sim" e organizar colunas
capacities_2 <- capacities_2 %>%
mutate(Num_pl = rowSums(select(.,pl_sa:pl_ed)))%>%
relocate(Num_pl, .after = pl_ed)
# Categorizar quantidade de planos planos
capacities_2 <- capacities_2 %>%
mutate(Pl_class = case_when(
Num_pl == 3 ~ "Possui 3",
Num_pl == 2 ~ "Possui 2",
Num_pl == 1 ~ "Possui 1",
Num_pl == 0 ~ "Não possui")) %>%
relocate(Pl_class, .after = Num_pl)
capacities_2$Pl_class <- ordered(capacities_2$Pl_class,
levels = c(levels_cat))
# Verificar lables
unique(capacities_1$fu_as)
## [1] "Sim" "Não" "Recusa"
unique(capacities_1$fu_sa)
## [1] "Sim" "Recusa" "Não informado" "Não"
unique(capacities_1$fu_ed)
## [1] "Sim" "Não" "Não informado" "Recusa"
# Criar dummies 1 = Sim; 0 = Não.
capacities_2 <- capacities_2 %>%
mutate_at(vars(fu_sa:fu_ed), funs(ifelse(.== "Sim", 1, 0)))
# Contar quantidade de "sim" e organizar colunas
capacities_2 <- capacities_2 %>%
mutate(Num_fu = rowSums(select(.,fu_sa:fu_ed)))%>%
relocate(Num_fu, .after = fu_ed)
# Categorizar quantidade de fundos
capacities_2 <- capacities_2 %>%
mutate(Fu_class = case_when(
Num_fu == 3 ~ "Possui 3",
Num_fu == 2 ~ "Possui 2",
Num_fu == 1 ~ "Possui 1",
Num_fu == 0 ~ "Não possui")) %>%
relocate(Fu_class, .after = Num_fu)
capacities_2$Fu_class <- ordered(capacities_2$Fu_class,
levels = c(levels_cat))
# Verificar lables
unique(capacities_1$chl_as)
## [1] "Sim" "Não" "Recusa"
unique(capacities_1$chl_sa)
## [1] "Sim" "Não" "Recusa" "Não informado"
unique(capacities_1$chl_ed)
## [1] "Não" "Sim" "Não informado" "Recusa"
# Criar dummies 1 = Sim; 0 = Não.
capacities_2 <- capacities_2 %>%
mutate_at(vars(chl_sa:chl_ed), funs(ifelse(.== "Sim", 1, 0)))
# Contar quantidade de "sim" e organizar colunas
capacities_2 <- capacities_2 %>%
mutate(Num_chl = rowSums(select(.,chl_sa:chl_ed)))%>%
relocate(Num_chl, .after = chl_ed)
# Categorizar quantidade de planos planos
capacities_2 <- capacities_2 %>%
mutate(Chl_class = case_when(
Num_chl == 3 ~ "Possui 3",
Num_chl == 2 ~ "Possui 2",
Num_chl == 1 ~ "Possui 1",
Num_chl == 0 ~ "Não possui")) %>%
relocate(Chl_class, .after = Num_chl)
capacities_2$Chl_class <- ordered(capacities_2$Chl_class,
levels = c(levels_cat))
# Assistência Social
levels(capacities_2$consor_as)
## [1] "Não" "Não informado" "Recusa" "Sim"
levels(capacities_2$consor_ed)
## [1] "Não" "Não informado" "Recusa" "Sim"
levels(capacities_2$consor_sa)
## [1] "Não" "Não informado" "Recusa" "Sim"
capacities_2 <- capacities_2 %>%
mutate_at(vars(consor_ed:consor_as),
funs(ifelse(.== "Sim", 1, 0)))
# Contar quantidade de "sim" e organizar colunas
capacities_2 <- capacities_2 %>%
mutate(Num_consor = rowSums(select(.,consor_ed:consor_as)))%>%
relocate(Num_consor, .after = consor_as)
# Categorizar quantidade de planos planos
capacities_2 <- capacities_2 %>%
mutate(Consor_class = case_when(
Num_consor == 3 ~ "Possui 3",
Num_consor == 2 ~ "Possui 2",
Num_consor == 1 ~ "Possui 1",
Num_consor == 0 ~ "Não possui")) %>%
relocate(Consor_class, .after = Num_consor)
capacities_2$Consor_class <- ordered(capacities_2$Consor_class,
levels = c(levels_cat))
capacities_2 <- capacities_2 %>%
mutate(ser_sa_pop = ser_sa*10000/populacao,
ser_ed_pop = ser_ed*10000/populacao,
ser_as_pop = ser_as*10000/populacao,
total_ser_por_10mil_hab = ser_sa_pop + ser_ed_pop + ser_as_pop,
total_ser_por_10mil_hab = round(total_ser_por_10mil_hab)) %>%
relocate(ser_sa:ser_ed, .after = Consor_class ) %>%
relocate(ser_sa_pop:total_ser_por_10mil_hab, .after = ser_ed)
#Verificar quantiles
quantile(capacities_2$idhm, c(.2,.4,.6,.8,1))
## 20% 40% 60% 80% 100%
## 0.584 0.629 0.681 0.719 0.854
min(capacities_2$idhm)
## [1] 0.418
max(capacities_2$idhm)
## [1] 0.854
# 20% 40% 60% 80% 100%
# 0.584 0.629 0.681 0.719 0.854
Quintis do IDHM 20% 40% 60% 80% 100% 0.584 0.629 0.681 0.719 0.854
capacities_2 <- capacities_2 %>%
mutate(idhm_quintil = case_when(
idhm <= 0.584 ~ "primeiro",
idhm >= 0.585 & idhm <= 0.629 ~ "segundo",
idhm >= 0.630 & idhm <= 0.681 ~ "terceiro",
idhm >= 0.682 & idhm <= 0.719 ~ "quarto",
idhm >= 0.720 ~ "quinto"))
levels_idhm = c("primeiro", "segundo", "terceiro", "quarto", "quinto")
capacities_2$idhm_quintil <- ordered(capacities_2$idhm_quintil,
levels = c(levels_idhm))
Do nosso artigo
“Para operacionalizar essa variável, devido à necessidade de ajuste ao modelo logístico empregado (Yee, 2010), ao invés de trabalharmos com as gradações oficiais, trabalhamos com os quintis da distribuição observada , ordenados de forma crescente” p. 10
“Pela classificação do Atlas Brasil, dentre os 4.916 municípios analisados, apenas 30 se enquadram na classificação “muito baixo” e 5, na “muito alto”. Isso gera alta concentração nas categorias intermediárias (“baixo” = 1.316; “médio”= 2.054 e “alto” = 1.511). Ao adotar a classificação por quintis, aproximadamente 25% dos valores ficam classificadas em cada uma das categoriais, o que representa uma distribuição mais homogênea entre as categorias e permite a melhor aplicação do modelo logístico de regressão." p. 10, nota 4.
capacities_2 %>%
count(idhm_quintil, name = "qtdd_de_mun") %>%
mutate(perc = qtdd_de_mun/sum(qtdd_de_mun)*100)
Criada para preservar os dados brutos em caso de reutilização
capacities_3 <- capacities_2
capacities_3 %>%
datatable(extensions = 'Buttons',
rownames = F,
options = list(dom = 'Blfrtip',
buttons = c('csv', 'excel'),
autoFill = TRUE,
fixedHeader = TRUE,
autowidth = TRUE,
paging = F,
scrollX = TRUE,
scrollY = "400px"))
# Verificar existência de NAs
DataExplorer::plot_missing(capacities_3)
# NA - presentes apenas na quantidade de servidores
# 1,46% dos casos está com NA. Excluindo esses, o número de municípios decai para 4.844 (86% do total)
capacities_3 <- capacities_3 %>%
drop_na(total_ser_por_10mil_hab)
DataExplorer::plot_missing(capacities_3)
# Uso particular para configurações
# setwd("C:/r_files/my_academic_projects/capacidades/capacitties")
#save.image("capacities_raw_data_3.RData")
#load("capacities_raw_data_3.RData")
capacities_4 <- capacities_3
vglm, do pacote ‘VGAM’, e os argumentos family = cumulative(parallel = T, reverse = T)No artigo foram reportadas apenas a coluna Estimate e o p-value
olr_brasil <- vglm(idhm_quintil ~ log(pib_per_cap) +
Num_sc + Num_pl + Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
data = capacities_4, family = cumulative(parallel = T, reverse = T))
summary(olr_brasil)
##
## Call:
## vglm(formula = idhm_quintil ~ log(pib_per_cap) + Num_sc + Num_pl +
## Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
## family = cumulative(parallel = T, reverse = T), data = capacities_4)
##
## Pearson residuals:
## Min 1Q Median 3Q Max
## logitlink(P[Y>=2]) -39.89 0.002594 0.006031 0.01557 0.06668
## logitlink(P[Y>=3]) -42.78 0.008293 0.113751 0.41665 38.99648
## logitlink(P[Y>=4]) -412.20 -0.405759 0.032265 0.41417 4.56583
## logitlink(P[Y>=5]) -38.24 -0.431457 -0.101732 -0.03033 7.60692
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept):1 -1.885e+01 1.323e+00 -14.244 < 2e-16 ***
## (Intercept):2 -2.698e+01 8.476e-01 -31.830 < 2e-16 ***
## (Intercept):3 -2.906e+01 8.636e-01 -33.654 < 2e-16 ***
## (Intercept):4 -3.114e+01 8.803e-01 -35.368 < 2e-16 ***
## log(pib_per_cap) 2.999e+00 6.496e-02 46.170 < 2e-16 ***
## Num_sc -1.922e-01 3.597e-02 -5.343 9.14e-08 ***
## Num_pl 2.891e-01 5.170e-02 5.593 2.23e-08 ***
## Num_fu -1.583e-02 1.876e-01 -0.084 0.933
## Num_chl 4.699e-01 8.442e-02 5.567 2.59e-08 ***
## total_ser_por_10mil_hab -3.228e-03 2.291e-04 -14.086 < 2e-16 ***
## Num_consor 2.129e-01 3.882e-02 5.484 4.16e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Names of linear predictors: logitlink(P[Y>=2]), logitlink(P[Y>=3]),
## logitlink(P[Y>=4]), logitlink(P[Y>=5])
##
## Residual deviance: 9526.135 on 19365 degrees of freedom
##
## Log-likelihood: -4763.068 on 19365 degrees of freedom
##
## Number of Fisher scoring iterations: 7
##
## Warning: Hauck-Donner effect detected in the following estimate(s):
## 'log(pib_per_cap)'
##
##
## Exponentiated coefficients:
## log(pib_per_cap) Num_sc Num_pl
## 20.0675294 0.8251697 1.3352692
## Num_fu Num_chl total_ser_por_10mil_hab
## 0.9842928 1.5998896 0.9967775
## Num_consor
## 1.2372248
norte <- capacities_4 %>%
filter(regiao == "1 - Norte")
olr_norte <- vglm(idhm_quintil ~ log(pib_per_cap) +
Num_sc + Num_pl + Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
data = norte, family = cumulative(parallel = T, reverse = T))
summary(olr_norte)
##
## Call:
## vglm(formula = idhm_quintil ~ log(pib_per_cap) + Num_sc + Num_pl +
## Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
## family = cumulative(parallel = T, reverse = T), data = norte)
##
## Pearson residuals:
## Min 1Q Median 3Q Max
## logitlink(P[Y>=2]) -11.6937 0.02193 0.03387 0.05783 0.1616
## logitlink(P[Y>=3]) -8.4486 -0.63428 0.25762 0.66895 2.8873
## logitlink(P[Y>=4]) -5.5986 -0.47224 -0.20576 -0.10789 4.4049
## logitlink(P[Y>=5]) -0.9945 -0.07732 -0.04386 -0.02527 7.3799
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept):1 -1.899e+01 3.028e+00 -6.272 3.56e-10 ***
## (Intercept):2 -2.525e+01 2.920e+00 -8.646 < 2e-16 ***
## (Intercept):3 -2.778e+01 2.989e+00 -9.296 < 2e-16 ***
## (Intercept):4 -3.172e+01 3.208e+00 -9.887 < 2e-16 ***
## log(pib_per_cap) 2.812e+00 2.864e-01 9.819 < 2e-16 ***
## Num_sc -2.261e-01 1.562e-01 -1.447 0.1478
## Num_pl 2.759e-01 1.984e-01 1.391 0.1644
## Num_fu -3.657e-01 4.535e-01 -0.807 0.4200
## Num_chl 4.202e-01 2.370e-01 1.773 0.0763 .
## total_ser_por_10mil_hab -1.301e-03 7.617e-04 -1.707 0.0878 .
## Num_consor -1.338e-01 1.663e-01 -0.805 0.4210
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Names of linear predictors: logitlink(P[Y>=2]), logitlink(P[Y>=3]),
## logitlink(P[Y>=4]), logitlink(P[Y>=5])
##
## Residual deviance: 650.6922 on 1461 degrees of freedom
##
## Log-likelihood: -325.3461 on 1461 degrees of freedom
##
## Number of Fisher scoring iterations: 6
##
## Warning: Hauck-Donner effect detected in the following estimate(s):
## '(Intercept):4'
##
##
## Exponentiated coefficients:
## log(pib_per_cap) Num_sc Num_pl
## 16.6422866 0.7975992 1.3176625
## Num_fu Num_chl total_ser_por_10mil_hab
## 0.6936807 1.5222058 0.9987004
## Num_consor
## 0.8747401
nordeste <- capacities_4 %>%
filter(regiao == "2 - Nordeste")
olr_nordeste <- vglm(idhm_quintil ~ log(pib_per_cap) +
Num_sc + Num_pl + Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
data = nordeste, family = cumulative(parallel = T, reverse = T))
summary(olr_nordeste)
##
## Call:
## vglm(formula = idhm_quintil ~ log(pib_per_cap) + Num_sc + Num_pl +
## Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
## family = cumulative(parallel = T, reverse = T), data = nordeste)
##
## Pearson residuals:
## Min 1Q Median 3Q Max
## logitlink(P[Y>=2]) -10.4937 -0.71844 -0.52440 1.03456 3.571
## logitlink(P[Y>=3]) -1.3915 -0.16458 -0.10526 -0.07931 10.356
## logitlink(P[Y>=4]) -0.2412 -0.02037 -0.01622 -0.01294 4.921
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept):1 -1.531e+01 1.657e+00 -9.236 < 2e-16 ***
## (Intercept):2 -1.897e+01 1.706e+00 -11.124 < 2e-16 ***
## (Intercept):3 -2.266e+01 1.954e+00 -11.601 < 2e-16 ***
## log(pib_per_cap) 1.761e+00 1.414e-01 12.454 < 2e-16 ***
## Num_sc -1.397e-01 7.817e-02 -1.787 0.0739 .
## Num_pl 4.692e-01 1.002e-01 4.681 2.85e-06 ***
## Num_fu -8.372e-01 3.279e-01 -2.553 0.0107 *
## Num_chl 4.237e-01 1.766e-01 2.399 0.0164 *
## total_ser_por_10mil_hab -1.041e-03 4.301e-04 -2.421 0.0155 *
## Num_consor 1.566e-01 6.982e-02 2.243 0.0249 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Names of linear predictors: logitlink(P[Y>=2]), logitlink(P[Y>=3]),
## logitlink(P[Y>=4])
##
## Residual deviance: 2155.195 on 4712 degrees of freedom
##
## Log-likelihood: -1077.598 on 4712 degrees of freedom
##
## Number of Fisher scoring iterations: 7
##
## Warning: Hauck-Donner effect detected in the following estimate(s):
## '(Intercept):3'
##
##
## Exponentiated coefficients:
## log(pib_per_cap) Num_sc Num_pl
## 5.8185821 0.8696209 1.5987059
## Num_fu Num_chl total_ser_por_10mil_hab
## 0.4329370 1.5276287 0.9989593
## Num_consor
## 1.1695124
centro_oeste <- capacities_4 %>%
filter(regiao == "5 - Centro-Oeste")
olr_centro_oeste <- vglm(idhm_quintil ~ log(pib_per_cap) +
Num_sc + Num_pl + Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
data = nordeste, family = cumulative(parallel = T, reverse = T))
summary(olr_centro_oeste)
##
## Call:
## vglm(formula = idhm_quintil ~ log(pib_per_cap) + Num_sc + Num_pl +
## Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
## family = cumulative(parallel = T, reverse = T), data = nordeste)
##
## Pearson residuals:
## Min 1Q Median 3Q Max
## logitlink(P[Y>=2]) -10.4937 -0.71844 -0.52440 1.03456 3.571
## logitlink(P[Y>=3]) -1.3915 -0.16458 -0.10526 -0.07931 10.356
## logitlink(P[Y>=4]) -0.2412 -0.02037 -0.01622 -0.01294 4.921
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept):1 -1.531e+01 1.657e+00 -9.236 < 2e-16 ***
## (Intercept):2 -1.897e+01 1.706e+00 -11.124 < 2e-16 ***
## (Intercept):3 -2.266e+01 1.954e+00 -11.601 < 2e-16 ***
## log(pib_per_cap) 1.761e+00 1.414e-01 12.454 < 2e-16 ***
## Num_sc -1.397e-01 7.817e-02 -1.787 0.0739 .
## Num_pl 4.692e-01 1.002e-01 4.681 2.85e-06 ***
## Num_fu -8.372e-01 3.279e-01 -2.553 0.0107 *
## Num_chl 4.237e-01 1.766e-01 2.399 0.0164 *
## total_ser_por_10mil_hab -1.041e-03 4.301e-04 -2.421 0.0155 *
## Num_consor 1.566e-01 6.982e-02 2.243 0.0249 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Names of linear predictors: logitlink(P[Y>=2]), logitlink(P[Y>=3]),
## logitlink(P[Y>=4])
##
## Residual deviance: 2155.195 on 4712 degrees of freedom
##
## Log-likelihood: -1077.598 on 4712 degrees of freedom
##
## Number of Fisher scoring iterations: 7
##
## Warning: Hauck-Donner effect detected in the following estimate(s):
## '(Intercept):3'
##
##
## Exponentiated coefficients:
## log(pib_per_cap) Num_sc Num_pl
## 5.8185821 0.8696209 1.5987059
## Num_fu Num_chl total_ser_por_10mil_hab
## 0.4329370 1.5276287 0.9989593
## Num_consor
## 1.1695124
sudeste <- capacities_4 %>%
filter(regiao == "3 - Sudeste")
olr_sudeste <- vglm(idhm_quintil ~ log(pib_per_cap) +
Num_sc + Num_pl + Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
data = sudeste, family = cumulative(parallel = T, reverse = T))
summary(olr_sudeste)
##
## Call:
## vglm(formula = idhm_quintil ~ log(pib_per_cap) + Num_sc + Num_pl +
## Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
## family = cumulative(parallel = T, reverse = T), data = sudeste)
##
## Pearson residuals:
## Min 1Q Median 3Q Max
## logitlink(P[Y>=2]) -7.287 0.05029 0.08777 0.1928 16.844
## logitlink(P[Y>=3]) -296.849 -0.26635 0.20975 0.4934 2.085
## logitlink(P[Y>=4]) -25.669 -0.59329 -0.18417 0.6732 5.626
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept):1 -2.248e+01 1.833e+00 -12.261 < 2e-16 ***
## (Intercept):2 -2.513e+01 1.850e+00 -13.586 < 2e-16 ***
## (Intercept):3 -2.740e+01 1.877e+00 -14.600 < 2e-16 ***
## log(pib_per_cap) 2.647e+00 1.368e-01 19.350 < 2e-16 ***
## Num_sc -1.251e-01 6.811e-02 -1.836 0.066322 .
## Num_pl -1.268e-01 9.624e-02 -1.318 0.187562
## Num_fu 3.821e-01 4.467e-01 0.855 0.392340
## Num_chl 6.619e-01 1.780e-01 3.718 0.000201 ***
## total_ser_por_10mil_hab -2.441e-03 4.241e-04 -5.756 8.61e-09 ***
## Num_consor -6.481e-01 9.305e-02 -6.965 3.28e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Names of linear predictors: logitlink(P[Y>=2]), logitlink(P[Y>=3]),
## logitlink(P[Y>=4])
##
## Residual deviance: 2668.3 on 4211 degrees of freedom
##
## Log-likelihood: -1334.15 on 4211 degrees of freedom
##
## Number of Fisher scoring iterations: 7
##
## Warning: Hauck-Donner effect detected in the following estimate(s):
## 'log(pib_per_cap)'
##
##
## Exponentiated coefficients:
## log(pib_per_cap) Num_sc Num_pl
## 14.1096099 0.8824353 0.8808905
## Num_fu Num_chl total_ser_por_10mil_hab
## 1.4654154 1.9384173 0.9975619
## Num_consor
## 0.5230478
sul <- capacities_4 %>%
filter(regiao == "4 - Sul")
olr_sul <- vglm(idhm_quintil ~ log(pib_per_cap) +
Num_sc + Num_pl + Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
data = sul, family = cumulative(parallel = T, reverse = T))
summary(olr_sul)
##
## Call:
## vglm(formula = idhm_quintil ~ log(pib_per_cap) + Num_sc + Num_pl +
## Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
## family = cumulative(parallel = T, reverse = T), data = sul)
##
## Pearson residuals:
## Min
## logitlink(P[Y>=2]) -10.246
## logitlink(P[Y>=3]) -18.162
## logitlink(P[Y>=4]) -8.533
## 1Q
## logitlink(P[Y>=2]) 0.03047
## logitlink(P[Y>=3]) 0.12385
## logitlink(P[Y>=4]) -0.81938
## Median
## logitlink(P[Y>=2]) 0.04609
## logitlink(P[Y>=3]) 0.20622
## logitlink(P[Y>=4]) 0.20442
## 3Q
## logitlink(P[Y>=2]) 0.06672
## logitlink(P[Y>=3]) 0.41389
## logitlink(P[Y>=4]) 0.78411
## Max
## logitlink(P[Y>=2]) 0.5401
## logitlink(P[Y>=3]) 1.0257
## logitlink(P[Y>=4]) 3.0945
##
## Coefficients:
## Estimate
## (Intercept):1 -19.5138738
## (Intercept):2 -22.8895114
## (Intercept):3 -25.3453916
## log(pib_per_cap) 2.6543825
## Num_sc -0.2585624
## Num_pl 0.0732197
## Num_fu -0.3294161
## Num_chl 0.0566288
## total_ser_por_10mil_hab -0.0014970
## Num_consor 0.1601353
## Std. Error
## (Intercept):1 2.6226197
## (Intercept):2 2.5933103
## (Intercept):3 2.6153290
## log(pib_per_cap) 0.1981137
## Num_sc 0.0691492
## Num_pl 0.1170027
## Num_fu 0.5543246
## Num_chl 0.2136118
## total_ser_por_10mil_hab 0.0006309
## Num_consor 0.0912997
## z value
## (Intercept):1 -7.441
## (Intercept):2 -8.826
## (Intercept):3 -9.691
## log(pib_per_cap) 13.398
## Num_sc -3.739
## Num_pl 0.626
## Num_fu -0.594
## Num_chl 0.265
## total_ser_por_10mil_hab -2.373
## Num_consor 1.754
## Pr(>|z|)
## (Intercept):1 0.0000000000001
## (Intercept):2 < 0.0000000000000002
## (Intercept):3 < 0.0000000000000002
## log(pib_per_cap) < 0.0000000000000002
## Num_sc 0.000185
## Num_pl 0.531450
## Num_fu 0.552334
## Num_chl 0.790931
## total_ser_por_10mil_hab 0.017661
## Num_consor 0.079439
##
## (Intercept):1 ***
## (Intercept):2 ***
## (Intercept):3 ***
## log(pib_per_cap) ***
## Num_sc ***
## Num_pl
## Num_fu
## Num_chl
## total_ser_por_10mil_hab *
## Num_consor .
## ---
## Signif. codes:
## 0 '***' 0.001
## '**' 0.01 '*'
## 0.05 '.' 0.1 ' ' 1
##
## Names of linear predictors:
## logitlink(P[Y>=2]),
## logitlink(P[Y>=3]),
## logitlink(P[Y>=4])
##
## Residual deviance: 1829.168 on 3221 degrees of freedom
##
## Log-likelihood: -914.5841 on 3221 degrees of freedom
##
## Number of Fisher scoring iterations: 5
##
## Warning: Hauck-Donner effect detected in the following estimate(s):
## 'log(pib_per_cap)'
##
##
## Exponentiated coefficients:
## log(pib_per_cap)
## 14.2162048
## Num_sc
## 0.7721609
## Num_pl
## 1.0759669
## Num_fu
## 0.7193436
## Num_chl
## 1.0582629
## total_ser_por_10mil_hab
## 0.9985041
## Num_consor
## 1.1736696
shape_mun <- geobr::read_municipality(simplified = T, showProgress = F)
shape_estado <- geobr::read_state(simplified = T, showProgress = F)
# Uso particular para configurações
#setwd("C:/r_files/my_academic_projects/capacidades/capacitties")
#save.image("capacities_raw_data_4.RData")
#load("capacities_raw_data_4.RData")
# rm(list = setdiff(ls(), "map"))
#save.image("capacities_raw_data_shapes.RData")
load("capacities_raw_data_shapes.RData")
map <- shape_mun %>%
select(cod_mun = code_muni, geom) %>%
mutate(cod_mun = as.character(cod_mun)) %>%
left_join(capacities_4)
#save(map, "map.RData")
theme_map_manual <- function(){
theme(legend.position = c(0.35, 0.5),
legend.justification = c("right", "top"),
legend.background = element_blank(),
plot.title=element_text( hjust=0, vjust=-5, face='bold', size = 12))
}
levels_map <- levels(map$Sc_class)
# inverter ordem e incluir NA
levels_map <- c(levels_map[c(4:1)], NA)
# Definir cores
colors_map <- c(scales::viridis_pal(option = "D")(4), "gray40")
# Definir cor para cada level
names(colors_map) <- levels_map
# Definir rótulos
labels_map <- levels_map
labels_map[5] <- "Não analisados\nAcima de 50.000hab."
map_sc <- map %>%
ggplot()+
geom_sf(aes(fill = fct_infreq(Sc_class)),
color = NA)+
scale_fill_manual(name = "Secretarias",
values = colors_map,
na.value = "gray40",
limits = levels_map,
breaks = levels_map,
labels = labels_map)+
geom_sf(data=shape_estado, fill=NA, color = "black")+
ggthemes::theme_map()+
theme_map_manual()+
ggtitle("Secretarias exclusivas")
map_pl <- map %>%
ggplot()+
geom_sf(aes(fill = fct_infreq(Pl_class)), color = NA)+
scale_fill_manual(name = "Planos",
values = colors_map,
na.value = "gray40",
limits = levels_map,
breaks = levels_map,
labels = labels_map)+
geom_sf(data=shape_estado, fill=NA, color = "black")+
ggthemes::theme_map()+
theme_map_manual()+
ggtitle("Planos")
map_fu <- map %>%
ggplot()+
geom_sf(aes(fill = fct_infreq(Fu_class)), color = NA)+
scale_fill_manual(name = "Fundos",
values = colors_map,
na.value = "gray40",
limits = levels_map,
breaks = levels_map,
labels = labels_map)+
geom_sf(data=shape_estado, fill=NA, color = "black")+
ggthemes::theme_map()+
theme_map_manual()+
ggtitle("Fundos")
map_chl <- map %>%
ggplot()+
geom_sf(aes(fill = fct_infreq(Chl_class)),
color = NA)+
scale_fill_manual(name = "Conselhos",
values = colors_map,
na.value = "gray40",
limits = levels_map,
breaks = levels_map,
labels = labels_map)+
geom_sf(data=shape_estado, fill=NA, color = "black")+
ggthemes::theme_map()+
theme_map_manual()+
ggtitle("Conselhos")
mapas <- gridExtra::grid.arrange(map_sc, map_pl, map_fu, map_chl, ncol = 2)
mapas
## TableGrob (2 x 2) "arrange": 4 grobs
## z cells name grob
## 1 1 (1-1,1-1) arrange gtable[layout]
## 2 2 (1-1,2-2) arrange gtable[layout]
## 3 3 (2-2,1-1) arrange gtable[layout]
## 4 4 (2-2,2-2) arrange gtable[layout]
X11(width = 20, height = 20); mapas
## TableGrob (2 x 2) "arrange": 4 grobs
## z cells name grob
## 1 1 (1-1,1-1) arrange gtable[layout]
## 2 2 (1-1,2-2) arrange gtable[layout]
## 3 3 (2-2,1-1) arrange gtable[layout]
## 4 4 (2-2,2-2) arrange gtable[layout]
Não reportadas no artigo
cap_cor <- capacities_4 %>%
select(pib_per_cap, idhm, starts_with("Num"), total_ser_por_10mil_hab, populacao)
corr <- round(cor(cap_cor), 2)
ggcorrplot(corr, hc.order = F,
type = "lower",
show.diag = T,
pch = 12,
pch.cex = 12,
tl.cex = 12,
lab = TRUE,
lab_size = 3,
method="circle",
colors = c("tomato2", "white", "springgreen3"),
title="Correlação entre variáveis numéricas",
ggtheme=theme_bw)
sjPlot::sjt.xtab(capacities_4$idhm_quintil,
capacities_4$regiao,
encoding = "windows",
show.summary = F,
show.row.prc = T,
show.col.prc = T,
title = "IDHM por região")
| idhm_quintil | regiao | Total | ||||
|---|---|---|---|---|---|---|
| 1 - Norte | 2 - Nordeste | 3 - Sudeste | 4 - Sul | 5 - Centro-Oeste | ||
| primeiro |
1 100 % 0.3 % |
0 0 % 0 % |
0 0 % 0 % |
0 0 % 0 % |
0 0 % 0 % |
1 100 % 0 % |
| segundo |
154 12.8 % 41.8 % |
975 81.2 % 61.9 % |
61 5.1 % 4.3 % |
5 0.4 % 0.5 % |
6 0.5 % 1.4 % |
1201 100 % 24.8 % |
| terceiro |
150 12.4 % 40.8 % |
564 46.8 % 35.8 % |
308 25.6 % 21.9 % |
109 9 % 10.1 % |
74 6.1 % 17.7 % |
1205 100 % 24.9 % |
| quarto |
60 4.8 % 16.3 % |
34 2.7 % 2.2 % |
497 40.1 % 35.3 % |
412 33.2 % 38.3 % |
237 19.1 % 56.7 % |
1240 100 % 25.6 % |
| quinto |
3 0.3 % 0.8 % |
1 0.1 % 0.1 % |
541 45.2 % 38.5 % |
551 46 % 51.2 % |
101 8.4 % 24.2 % |
1197 100 % 24.7 % |
| Total |
368 7.6 % 100 % |
1574 32.5 % 100 % |
1407 29 % 100 % |
1077 22.2 % 100 % |
418 8.6 % 100 % |
4844 100 % 100 % |
sjPlot::sjt.xtab(capacities_4$idhm_quintil,
capacities_4$faixa_pop,
encoding = "UTF-8",
show.summary = F,
show.row.prc = T,
show.col.prc = T,
title = "IDHM por tamanho população")
| idhm_quintil | faixa_pop | Total | |||
|---|---|---|---|---|---|
| 1 - Até 5000 | 2 - 5001 até 10000 | 3 - 10001 até 20000 | 4 - 20001 até 50000 | ||
| primeiro |
0 0 % 0 % |
0 0 % 0 % |
0 0 % 0 % |
1 100 % 0.1 % |
1 100 % 0 % |
| segundo |
173 14.4 % 14.1 % |
309 25.7 % 25.8 % |
447 37.2 % 32.9 % |
272 22.6 % 25.7 % |
1201 100 % 24.8 % |
| terceiro |
289 24 % 23.5 % |
305 25.3 % 25.4 % |
339 28.1 % 25 % |
272 22.6 % 25.7 % |
1205 100 % 24.9 % |
| quarto |
405 32.7 % 32.9 % |
336 27.1 % 28 % |
315 25.4 % 23.2 % |
184 14.8 % 17.4 % |
1240 100 % 25.6 % |
| quinto |
363 30.3 % 29.5 % |
249 20.8 % 20.8 % |
257 21.5 % 18.9 % |
328 27.4 % 31 % |
1197 100 % 24.7 % |
| Total |
1230 25.4 % 100 % |
1199 24.8 % 100 % |
1358 28 % 100 % |
1057 21.8 % 100 % |
4844 100 % 100 % |
sjPlot::sjt.xtab(capacities_4$idhm_quintil,
capacities_4$Sc_class,
encoding = "UTF-8",
show.summary = F,
show.row.prc = T,
show.col.prc = T)
| idhm_quintil | Sc_class | Total | |||
|---|---|---|---|---|---|
| Não possui | Possui 1 | Possui 2 | Possui 3 | ||
| primeiro |
0 0 % 0 % |
0 0 % 0 % |
0 0 % 0 % |
1 100 % 0 % |
1 100 % 0 % |
| segundo |
9 0.7 % 4.1 % |
101 8.4 % 17.2 % |
456 38 % 23.2 % |
635 52.9 % 30.7 % |
1201 100 % 24.8 % |
| terceiro |
23 1.9 % 10.4 % |
127 10.5 % 21.6 % |
498 41.3 % 25.3 % |
557 46.2 % 26.9 % |
1205 100 % 24.9 % |
| quarto |
71 5.7 % 32 % |
161 13 % 27.4 % |
545 44 % 27.7 % |
463 37.3 % 22.4 % |
1240 100 % 25.6 % |
| quinto |
119 9.9 % 53.6 % |
198 16.5 % 33.7 % |
468 39.1 % 23.8 % |
412 34.4 % 19.9 % |
1197 100 % 24.7 % |
| Total |
222 4.6 % 100 % |
587 12.1 % 100 % |
1967 40.6 % 100 % |
2068 42.7 % 100 % |
4844 100 % 100 % |
sjt.xtab(norte$idhm_quintil,
norte$Sc_class,
encoding = "UTF-8",
show.summary = F,
show.row.prc = T,
show.col.prc = T,
title = "Norte")
| idhm_quintil | Sc_class | Total | |||
|---|---|---|---|---|---|
| Não possui | Possui 1 | Possui 2 | Possui 3 | ||
| primeiro |
0 0 % 0 % |
0 0 % 0 % |
0 0 % 0 % |
1 100 % 0.5 % |
1 100 % 0.3 % |
| segundo |
1 0.6 % 100 % |
12 7.8 % 30 % |
42 27.3 % 30.9 % |
99 64.3 % 51.8 % |
154 100 % 41.8 % |
| terceiro |
0 0 % 0 % |
24 16 % 60 % |
64 42.7 % 47.1 % |
62 41.3 % 32.5 % |
150 100 % 40.8 % |
| quarto |
0 0 % 0 % |
4 6.7 % 10 % |
27 45 % 19.9 % |
29 48.3 % 15.2 % |
60 100 % 16.3 % |
| quinto |
0 0 % 0 % |
0 0 % 0 % |
3 100 % 2.2 % |
0 0 % 0 % |
3 100 % 0.8 % |
| Total |
1 0.3 % 100 % |
40 10.9 % 100 % |
136 37 % 100 % |
191 51.9 % 100 % |
368 100 % 100 % |
sjt.xtab(nordeste$idhm_quintil,
nordeste$Sc_class,
encoding = "UTF-8",
show.summary = F,
show.row.prc = T,
show.col.prc = T,
title = "Nordeste")
| idhm_quintil | Sc_class | Total | |||
|---|---|---|---|---|---|
| Não possui | Possui 1 | Possui 2 | Possui 3 | ||
| primeiro |
0 0 % 0 % |
0 0 % 0 % |
0 0 % 0 % |
0 0 % 0 % |
0 100 % 0 % |
| segundo |
7 0.7 % 53.8 % |
82 8.4 % 55.8 % |
394 40.4 % 61.6 % |
492 50.5 % 63.6 % |
975 100 % 61.9 % |
| terceiro |
5 0.9 % 38.5 % |
62 11 % 42.2 % |
231 41 % 36.1 % |
266 47.2 % 34.4 % |
564 100 % 35.8 % |
| quarto |
0 0 % 0 % |
3 8.8 % 2 % |
15 44.1 % 2.3 % |
16 47.1 % 2.1 % |
34 100 % 2.2 % |
| quinto |
1 100 % 7.7 % |
0 0 % 0 % |
0 0 % 0 % |
0 0 % 0 % |
1 100 % 0.1 % |
| Total |
13 0.8 % 100 % |
147 9.3 % 100 % |
640 40.7 % 100 % |
774 49.2 % 100 % |
1574 100 % 100 % |
sjt.xtab(centro_oeste$idhm_quintil,
centro_oeste$Sc_class,
encoding = "UTF-8",
show.summary = F,
show.row.prc = T,
show.col.prc = T,
title = "Centro-Oeste")
| idhm_quintil | Sc_class | Total | |||
|---|---|---|---|---|---|
| Não possui | Possui 1 | Possui 2 | Possui 3 | ||
| primeiro |
0 0 % 0 % |
0 0 % 0 % |
0 0 % 0 % |
0 0 % 0 % |
0 100 % 0 % |
| segundo |
0 0 % 0 % |
2 33.3 % 5.7 % |
3 50 % 1.5 % |
1 16.7 % 0.5 % |
6 100 % 1.4 % |
| terceiro |
1 1.4 % 50 % |
7 9.5 % 20 % |
30 40.5 % 15.4 % |
36 48.6 % 19.4 % |
74 100 % 17.7 % |
| quarto |
1 0.4 % 50 % |
17 7.2 % 48.6 % |
115 48.5 % 59 % |
104 43.9 % 55.9 % |
237 100 % 56.7 % |
| quinto |
0 0 % 0 % |
9 8.9 % 25.7 % |
47 46.5 % 24.1 % |
45 44.6 % 24.2 % |
101 100 % 24.2 % |
| Total |
2 0.5 % 100 % |
35 8.4 % 100 % |
195 46.7 % 100 % |
186 44.5 % 100 % |
418 100 % 100 % |
sjt.xtab(sudeste$idhm_quintil,
sudeste$Sc_class,
encoding = "UTF-8",
show.summary = F,
show.row.prc = T,
show.col.prc = T,
title = "Sudeste")
| idhm_quintil | Sc_class | Total | |||
|---|---|---|---|---|---|
| Não possui | Possui 1 | Possui 2 | Possui 3 | ||
| primeiro |
0 0 % 0 % |
0 0 % 0 % |
0 0 % 0 % |
0 0 % 0 % |
0 100 % 0 % |
| segundo |
1 1.6 % 2.1 % |
4 6.6 % 2.8 % |
16 26.2 % 3.1 % |
40 65.6 % 5.6 % |
61 100 % 4.3 % |
| terceiro |
4 1.3 % 8.5 % |
23 7.5 % 16.2 % |
108 35.1 % 21.2 % |
173 56.2 % 24.4 % |
308 100 % 21.9 % |
| quarto |
26 5.2 % 55.3 % |
63 12.7 % 44.4 % |
182 36.6 % 35.7 % |
226 45.5 % 31.9 % |
497 100 % 35.3 % |
| quinto |
16 3 % 34 % |
52 9.6 % 36.6 % |
204 37.7 % 40 % |
269 49.7 % 38 % |
541 100 % 38.5 % |
| Total |
47 3.3 % 100 % |
142 10.1 % 100 % |
510 36.2 % 100 % |
708 50.3 % 100 % |
1407 100 % 100 % |
sjt.xtab(sul$idhm_quintil,
sul$Sc_class,
encoding = "UTF-8",
show.summary = F,
show.row.prc = T,
show.col.prc = T,
title = "Sul")
| idhm_quintil | Sc_class | Total | |||
|---|---|---|---|---|---|
| Não possui | Possui 1 | Possui 2 | Possui 3 | ||
| primeiro |
0 0 % 0 % |
0 0 % 0 % |
0 0 % 0 % |
0 0 % 0 % |
0 100 % 0 % |
| segundo |
0 0 % 0 % |
1 20 % 0.4 % |
1 20 % 0.2 % |
3 60 % 1.4 % |
5 100 % 0.5 % |
| terceiro |
13 11.9 % 8.2 % |
11 10.1 % 4.9 % |
65 59.6 % 13.4 % |
20 18.3 % 9.6 % |
109 100 % 10.1 % |
| quarto |
44 10.7 % 27.7 % |
74 18 % 33.2 % |
206 50 % 42.4 % |
88 21.4 % 42.1 % |
412 100 % 38.3 % |
| quinto |
102 18.5 % 64.2 % |
137 24.9 % 61.4 % |
214 38.8 % 44 % |
98 17.8 % 46.9 % |
551 100 % 51.2 % |
| Total |
159 14.8 % 100 % |
223 20.7 % 100 % |
486 45.1 % 100 % |
209 19.4 % 100 % |
1077 100 % 100 % |